home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / bridge.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-09-24  |  13.0 KB  |  339 lines

  1. 10  CLS:WIDTH 80:CLEAR 1000:KEY OFF:SCREEN 0:COLOR 0,7,0:CLS
  2. 20  RANDOMIZE VAL(RIGHT$(TIME$,2))
  3. 30  LOCATE 9,10:PRINT "  $$$  BRIDGE  GAME  $$$":LOCATE 11,11:PRINT"CONTRACT":LOCATE 13,12:PRINT"OR DUPLICATE."
  4. 40  PRINT:DIM C(52),P(52),V(4,5),Y(4,5),F(4,13),T9(4),X(4),G(4)
  5. 50  DIM T$(104),E$(56),A$(13),Z$(26),D$(13):DEFINT I-N,G,T,W
  6. 60  A$="23456789TJQKA":N$="1234567"
  7. 70  B$="XCDHS"
  8. 80  LOCATE 18,6:PRINT"DO YOU WISH TO PLAY CONTRACT":LOCATE 19,6:INPUT"BRIDGE OR DUPLICATE BRIDGE ";Q$
  9. 90  CLS:R9=R9-4*INT(R9/4)+1:K1=0:K=R9:FOR I=1 TO 52:P(I)=I:NEXT:V5=14
  10. 100  IF Q$<>"C" AND Q$<>"c" THEN 120 ELSE 110
  11. 110  COLOR 0,7,0:LOCATE 11,15:PRINT "SHUFFLING":GOTO 220
  12. 120  A=3.14159:B=2.71828:C=1.41421:T1=0.5
  13. 130  PRINT "INPUT ANY POSITIVE NUMBER LESS THAN 1000":INPUT A9
  14. 140  PRINT :PRINT "SHUFFLING";
  15. 150  X9=A9:FOR J=52 TO 1 STEP-1
  16. 160  I2=I2+1:X9=1+ABS(X9):E=(E+(1+X9/B)*C)*I2:E=E-1*INT(E/A):E=E-INT(E)+0.018
  17. 170  IF E>0.5 THEN E=T1*(E-T1)+T1
  18. 180  R=INT(E*J+1):C(J)=P(R):P(R)=P(J):NEXT J:IF C(1)<13 THEN R9=1:GOTO 240
  19. 190  IF C(1)<27 THEN R9=2:GOTO 240
  20. 200  IF C(1)<40 THEN R9=3:GOTO 240
  21. 210  R9=4:GOTO 240
  22. 220  FOR J=52 TO 1 STEP-1
  23. 230  R=INT((RND*1)*J+1):C(J)=P(R):P(R)=P(J):NEXT
  24. 240  FOR I=1 TO 4:T9(I)=13:M=I*13-13:FOR J=1 TO 13:F(I,J)=C(J+M):NEXT:NEXT
  25. 250  COLOR 0:LOCATE 11,15:PRINT "SHUFFLING":LOCATE 12,16:COLOR 0,7,0:PRINT "DEALING"
  26. 260  FOR I=1 TO 4
  27. 270  T1=0
  28. 280  FOR J=2 TO 13:IF F(I,J-1)>F(I,J) THEN 300
  29. 290  T2=F(I,J):F(I,J)=F(I,J-1):F(I,J-1)=T2:T1=1
  30. 300  NEXT J:IF T1=1 THEN 270
  31. 310  NEXT:T$="":FOR L=1 TO 4:FOR I=1 TO 13
  32. 320  J=F(L,I)-13*INT(F(L,I)/13):M=INT((F(L,I)-0.1)/13):IF J=0 THEN J=13
  33. 330  Z$=MID$(A$,J,1)+MID$(B$,M+2,1):T$=T$+Z$:NEXT:NEXT
  34. 340  COLOR 0:LOCATE 12,16:PRINT "DEALING":R=1:H=0:COLOR 0,7,0:LOCATE 13,16:PRINT "SORTING":GOSUB 2460:K=1:L5=4:CLS
  35. 350  COLOR 0:LOCATE 2,2:PRINT"YOUR HAND (SOUTH):":PRINT:GOSUB 2220:E$="":S$="1A":K=R9-1
  36. 360  PRINT:IF K>0 THEN 480 ELSE PRINT" YOU ARE THE DEALER, WHAT DO YOU BID ?":PRINT
  37. 370  K=1:K1=K1+1:PRINT"SOUTH";
  38. 380  INPUT Z$:IF Z$="" THEN 440 ELSE IF LEFT$(Z$,1)<>"P" THEN 390 ELSE C(K1)=1:E$=E$+"00":IF K1<4 THEN 480 ELSE 560
  39. 390  IF MID$(Z$,2,1)="N" THEN Z$=LEFT$(Z$,1)+ "X"
  40. 400  IF LEFT$(Z$,1)<>"D" THEN 430 ELSE IF C(K1-1)=0 THEN 420 ELSE IF C(K1-2)=1 THEN 420
  41. 410  PRINT"  YOU CANNOT DOUBLE YOUR OWN PARTNER'S BID !":GOTO 440
  42. 420  C(K1)=0:E$=E$+"DB":IF K1<4 THEN 490 ELSE 560
  43. 430  IF Z$>S$ THEN 450
  44. 440  PRINT"  ILLEGAL BID, TRY AGAIN.":GOTO 380
  45. 450  C(K1)=0:IF K1>4 THEN 470
  46. 460  FOR I=1 TO 5:IF MID$(Z$,2,1)=MID$(B$,I,1) THEN X(1)=6-I:NEXT
  47. 470  E$=E$+Z$:S$=Z$
  48. 480  K=K+1:IF K>4 THEN 370 ELSE GOSUB 600:IF C(K1)=0 THEN 570
  49. 490  GOSUB 2760:IF K=3 THEN 550
  50. 500  T1=LEN(E$):IF T1<5 THEN 550
  51. 510  Z$=MID$(E$,T1-1,2):IF Z$="00" THEN 520 ELSE IF Z$="DB" THEN 550 ELSE 530
  52. 520  IF MID$(E$,T1-3,2)<>"00" THEN 550
  53. 530  GOSUB 3370:IF F1<>2 THEN 550
  54. 540  PRINT F$;": DOUBLE":E$=E$+"DB":IF K1<4 THEN 480 ELSE 560
  55. 550  PRINT F$;": PASS":E$=E$+"00"
  56. 560  IF K1<4 THEN 480 ELSE IF MID$(E$,2*K1-5,6)="000000" THEN 940 ELSE 480
  57. 570  GOSUB 3170:IF F1=1 THEN 490
  58. 580  S$=D$:E$=E$+S$:IF MID$(S$,2,1)="X" THEN D$=MID$(S$,1,1)+"NT"
  59. 590  GOSUB 2760:PRINT F$;": ";D$:GOTO 480
  60. 600  K1=K1+1:C(K1)=0:L=K-2:IF L<=0 THEN L=K+2
  61. 610  IF K1>4 THEN 780 ELSE IF K1>2 THEN 660
  62. 620  IF P(K)>23 THEN 740 ELSE IF P(K)>12 THEN 650
  63. 630  C(K1)=1:RETURN
  64. 640  GOSUB 3110:RETURN
  65. 650  GOSUB 3050:RETURN
  66. 660  IF C(K1-2)=1 THEN 620 ELSE IF P(K)>5 THEN 680 ELSE IF P(L)>23 THEN 650
  67. 670  IF C(K1-1)=0 THEN 630 ELSE IF MID$(E$,2*K1-5,1)<>"D" THEN 630 ELSE 650
  68. 680  IF P(K)>9 THEN 740 ELSE IF V(K,X(K))<5 THEN 700
  69. 690  IF MID$(B$,6-X(K),1)>MID$(S$,2,1) THEN 650
  70. 700  IF X(L)=5 THEN 650
  71. 710  IF V(K,X(L))>3 THEN 770
  72. 720  IF V(K,X(L))<2 THEN 630 ELSE IF Y(K,X(L))=0 THEN 730 ELSE 770
  73. 730  IF S$>="1X" THEN 630 ELSE D$="1X":RETURN
  74. 740  IF P(K)<14 THEN 650 ELSE IF P(K)>18 THEN L=K:GOTO 640
  75. 750  IF V(K,X(L))<4 THEN 650 ELSE IF V(K,X(K))<5 THEN 650
  76. 760  IF Y(K,X(K))<4 THEN 650 ELSE 640
  77. 770  GOSUB 3080:RETURN
  78. 780  IF P(K)>5 THEN 790 ELSE IF P(K)+P(L)>25 THEN 870
  79. 790  IF V(K,X(K))>4 THEN 810 ELSE IF P(K)>16 THEN 810
  80. 800  IF C(K1-2)=1 THEN 630 ELSE IF P(K)<10 THEN 700 ELSE IF K1<8 THEN 930 ELSE 870
  81. 810  IF C(K1-2)=0 THEN 830
  82. 820  IF P(K)<14 THEN 630 ELSE IF V(K,X(K))<5 THEN 630 ELSE 650
  83. 830  IF MID$(E$,2*(K1-1)-2,1)="X" THEN 900
  84. 840  IF K1>7 THEN 870 ELSE IF MID$(S$,1,1)>"2" THEN 870
  85. 850  IF V(K,X(K))<5 THEN 870 ELSE IF P(K)>9 THEN 650
  86. 860  IF MID$(B$,6-X(K),1)>MID$(S$,2,1)THEN 650 ELSE 710
  87. 870  IF X(L)=0 THEN 650 ELSE M1=Y(K,X(K))+V(K,X(K))+Y(L,X(K))+V(L,X(K))
  88. 880  M2=Y(K,X(L))+V(K,X(L))+Y(L,X(L))+V(L,X(L))
  89. 890  IF M1>=M2 THEN 650 ELSE IF V(K,X(L))<2 THEN 650 ELSE X(K)=X(L):GOTO 770
  90. 900  IF P(K)<6 THEN 630 ELSE IF MID$(E$,2*(K1-1)-3,2)="3X" THEN 630
  91. 910  F1=0:FOR I=1 TO 4:IF V(K,I)>4 THEN F1=1
  92. 920  NEXT:IF F1=1 THEN 650 ELSE IF K1>4 THEN 930 ELSE IF P(K)>12 THEN 640
  93. 930  GOSUB 3140:RETURN
  94. 940  I2=LEN(E$)-7:T1=6:IF MID$(E$,I2,1)<>"D" THEN 950 ELSE IF MID$(E$,I2-4,4)="0000" THEN T1=12 ELSE T1=8
  95. 950  X=(K1*2-T1)/2+(R9-1):W8=X-4*INT(X/4):IF W8=0 THEN W8=4
  96. 960  T4=W8-2:IF T4<1 THEN T4=W8+2
  97. 970  K=0:T1=K1*2-2:I=0
  98. 980  I=I+2:K=K+1:IF MID$(E$,I,1)<>MID$(S$,2,1) THEN 1010
  99. 990  K1=(K+(R9-1))-4*INT((K+(R9-1))/4):IF K1=0 THEN K1=4
  100. 1000  IF K1=W8 OR K1=T4 THEN 1030
  101. 1010  IF I<T1 THEN 980 ELSE PRINT "  EVERYONE PASSES, REDEAL."
  102. 1020  FOR Y=1 TO 750:NEXT:GOTO 90
  103. 1030  FOR I=1 TO 5:IF MID$(S$,2,1)=MID$(B$,6-I,1) THEN X=I
  104. 1040  NEXT
  105. 1050  IF X=5 THEN S$=MID$(S$,1,1)+"NT"
  106. 1060  IF MID$(E$,I2,1)="D" THEN S$=S$+" (DBL)"
  107. 1070  CLS:PRINT"THE CONTRACT IS: ";S$:K=K1:GOSUB 2760
  108. 1080  PRINT"THE DECLARER IS: ";F$:PRINT:PRINT:K2=K1+2:IF K2>4 THEN K2=K1-2
  109. 1090  R=0:W8=0:T4=0:PRINT"REVIEW OF THE BIDDING:":PRINT:PRINT"SOUTH  WEST   NORTH  EAST":T1=R9*7-7:PRINT TAB(T1);:I=-1:T2=R9-1:T3=LEN(E$)
  110. 1100  I=I+2:IF I>T3 THEN 1160
  111. 1110  D$=MID$(E$,I,2)+"  ":T2=T2+1:IF T2>4 THEN PRINT:T2=1
  112. 1120  IF MID$(E$,I+1,1)="X" THEN D$=MID$(E$,I,1)+"NT "
  113. 1130  IF MID$(E$,I,2)="DB" THEN D$="DBL "
  114. 1140  IF MID$(E$,I,2)="00" THEN D$="PASS"
  115. 1150  PRINT D$;"   ";:GOTO 1100
  116. 1160  PRINT:PRINT:PRINT"  READY TO PLAY";:INPUT D$:CLS
  117. 1170  H=H+1:IF H=5 THEN 2050 ELSE K=K+1:IF K>4 THEN K=1
  118. 1180  L=K-2:IF L<1 THEN L=K+2
  119. 1190  M1=K+1:IF M1=5 THEN M1=1
  120. 1200  M2=M1+2:IF M2>4 THEN M2=M1-2
  121. 1210  IF H>1 THEN 1290 ELSE G2=0
  122. 1220  IF R=13 THEN 2930 ELSE R=R+1:PRINT:CLS:LOCATE 1,16:PRINT"ROUND:";R:LOCATE 3,8:PRINT S$;"     WE:";W8;"   THEY:";T4:K3=K:PRINT
  123. 1230  IF K1-2*INT(K1/2)=0 THEN 1240 ELSE L5=5:K=3:PRINT" NORTH:":GOSUB 2220: GOTO 1270
  124. 1240  K=K1+2:IF K1=4 AND R=1 THEN 1270 ELSE IF K>4 THEN K=K1-2
  125. 1250  L5=7:IF K1=2 THEN L5=17
  126. 1260  GOSUB 2760:PRINT TAB(L5-4);F$;":":GOSUB 2220
  127. 1270  K=1:L5=7:IF K1<>4 THEN 1280 ELSE L5=17
  128. 1280  PRINT TAB(L5-4);"SOUTH:":GOSUB 2220:K=K3
  129. 1290  IF K>1 THEN 1370 ELSE K2=K:GOSUB 2360:GOSUB 2760
  130. 1300  PRINT F$;" PLAYS";:INPUT D$:IF LEN(D$)<2 THEN 1350 ELSE IF H=1 THEN 1330
  131. 1310  IF MID$(D$,2,1)=MID$(B$,6-N,1) THEN 1330 ELSE IF V(K,N)=0 THEN 1330
  132. 1320  PRINT"RENEGE, TRY AGAIN.":GOTO 1300
  133. 1330  F1=0:FOR I=1 TO T9(K)*2-1:IF D$=MID$(Z$,I,2) THEN F1=1
  134. 1340  NEXT:IF F1=1 THEN 1360
  135. 1350  PRINT"  ERROR IN LEAD, TRY AGAIN.":GOTO 1300
  136. 1360  GOSUB 2080:IF G(K)<G2 THEN 1170 ELSE G2=G(K):GOTO 1170
  137. 1370  IF K<>3 THEN 1390 ELSE IF K1-2*INT(K1/2)=0 THEN 1390
  138. 1380  K2=K:GOSUB 2360:GOSUB 2760:GOTO 1300
  139. 1390  IF H>1 THEN 1830 ELSE GOSUB 2620
  140. 1400  IF T1=4 THEN 1420 ELSE IF K=K1 OR L=K1 THEN 1450
  141. 1410  IF VAL(MID$(S$,1,1))>7-R THEN 1450
  142. 1420  IF V(K,X(L))=0 THEN 1450 ELSE IF X(L)<>X THEN 1430 ELSE IF K=K1 OR L=K1 THEN 1430 ELSE 1590
  143. 1430  K2=K:GOSUB 2360:T1=0:FOR I=1 TO X(L):T1=T1+V(K,I):NEXT:D$=MID$(Z$,2*T1-1,2)
  144. 1440  GOSUB 2080:G2=G(K):GOSUB 2760:PRINT F$;" PLAYS: ";D$:GOTO 1170
  145. 1450  IF V(K,X)=0 THEN 1520 ELSE IF K=K1 OR L=K1 THEN 1460 ELSE 1520
  146. 1460  IF V(M1,X)+V(M2,X)=0 THEN 1520
  147. 1470  K2=K:K$=MID$(B$,6-X,1):GOSUB 2840:G3=G(K):K2=L:GOSUB 2840
  148. 1480  IF G3>G(K) THEN 1510
  149. 1490  K2=K:GOSUB 2360:T1=0:FOR I=1 TO X:T1=T1+V(K,I):NEXT
  150. 1500  D$=MID$(Z$,2*T1-1,2):GOTO 1440
  151. 1510  K2=K:GOSUB 2840:GOTO 1440
  152. 1520  J=0
  153. 1530  J=J+1:IF V(M1,J)>0 THEN 1540 ELSE IF V(M1,X)>0 THEN 1570
  154. 1540  IF V(M2,J)>0 THEN 1550 ELSE IF V(M2,X)>0 THEN 1570
  155. 1550  IF J=X THEN 1570 ELSE K$=MID$(B$,6-J,1):K2=K:GOSUB 2840:T2=G(K):K2=M1:GOSUB 2840:IF G(K)>T2 THEN 1570
  156. 1560  K2=M2:GOSUB 2840:IF G(K)<T2 THEN 1580
  157. 1570  IF J<4 THEN 1530 ELSE IF V(K,X(L))=0 THEN 1590 ELSE 1430
  158. 1580  K2=K:GOSUB 2840:GOTO 1440
  159. 1590  K2=K:GOSUB 2360:T1=300:T2=1:FOR I=1 TO 27-2*R STEP 2:D$=MID$(Z$,I,2)
  160. 1600  IF MID$(D$,2,1)=MID$(S$,2,1) THEN 1620 ELSE GOSUB 2880:IF G(K)>T1 THEN 1620
  161. 1610  T1=G(K):T2=I
  162. 1620  NEXT:D$=MID$(Z$,T2,2):GOSUB 2080:IF G(K)>G2 THEN G2=G(K)
  163. 1630  GOSUB 2760:PRINT F$;" PLAYS: ";D$:GOTO 1170
  164. 1640  T1=0:FOR I=1 TO N:T1=T1+V(K,I):NEXT:K2=K:GOSUB 2360:D$=MID$(Z$,2*T1-1,2)
  165. 1650  GOSUB 2080:IF G(K)>G2 THEN G2=G(K)
  166. 1660  GOSUB 2760:PRINT F$;" PLAYS: ";D$:GOTO 1170
  167. 1670  IF V(K,X)=0 THEN 1590 ELSE G3=G2
  168. 1680  IF H<4 THEN 1750 ELSE IF G(L)=G2 THEN 1590
  169. 1690  T1=0:IF X=1 THEN 1710
  170. 1700  FOR I=1 TO X-1:T1=T1+V(K,I)*2:NEXT
  171. 1710  K2=K:GOSUB 2360:T2=T1+2*V(K,X)-1
  172. 1720  I=T1-1
  173. 1730  I=I+2:D$=MID$(Z$,I,2):GOSUB 2880:IF G(K)>G3 THEN 1740 ELSE IF I=T1+1 THEN 1590 ELSE 1920
  174. 1740  IF I<T2 THEN 1730 ELSE IF G(K)>G3 THEN 1930 ELSE 1590
  175. 1750  IF H=3 THEN 1780 ELSE IF V(L,N)>0 THEN 1770 ELSE IF V(L,X)>0 THEN 1590
  176. 1760  G(L)=0:GOTO 1780
  177. 1770  K2=L:K$=MID$(B$,6-N,1):GOSUB 2840:G(L)=G(K)
  178. 1780  K2=M1:IF V(M1,N)>0 THEN 1800 ELSE IF V(M1,X)=0 THEN G4=0:GOTO 1810
  179. 1790  K$=MID$(B$,6-X,1):GOSUB 2840:G4=G(K):GOTO 1810
  180. 1800  K$=MID$(B$,6-N,1):GOSUB 2840:G4=G(K)
  181. 1810  IF G4>G3 THEN G3=G4
  182. 1820  IF G(L)<G3 THEN 1690 ELSE 1590
  183. 1830  IF V(K,N)=0 THEN 1670 ELSE IF V(K,N)=1 THEN 1640 ELSE G3=G2:IF H<4 THEN 1940
  184. 1840  IF G(L)=G2 THEN 1640
  185. 1850  T1=0:IF N=1 THEN 1860 ELSE FOR I=1 TO N-1:T1=T1+V(K,I)*2:NEXT
  186. 1860  T2=T1+1+V(K,N)*2-2:K2=K:GOSUB 2360:I=T1-1
  187. 1870  I=I+2:D$=MID$(Z$,I,2):GOSUB 2880:IF G(K)>G3 THEN 1880 ELSE 1890
  188. 1880  IF I<T2 THEN 1870
  189. 1890  IF I=T1+1 THEN 1930 ELSE IF G(K)>G3 THEN 1930
  190. 1900  D$=MID$(Z$,I-2,2):GOSUB 2880:IF G(K)>G3 THEN 1920
  191. 1910  IF H=3 THEN GOSUB 2380:IF F1=1 THEN 1650
  192. 1920  D$=MID$(Z$,I-2,2):GOTO 1650
  193. 1930  D$=MID$(Z$,T2,2):GOTO 1650
  194. 1940  IF H=3 THEN 1980 ELSE K2=L:IF V(L,N)>0 THEN 1970
  195. 1950  IF V(L,X)>0 THEN 1960 ELSE G(L)=0:GOTO 1980
  196. 1960  K$=MID$(B$,6-X,1):GOSUB 2840:G(L)=G(K):GOTO 1980
  197. 1970  K$=MID$(B$,6-N,1):GOSUB 2840:G(L)=G(K)
  198. 1980  K2=M1:IF V(M1,N)>0 THEN 2010
  199. 1990  IF V(M1,X)>0 THEN 2000 ELSE G4=0:GOTO 2020
  200. 2000  K$=MID$(B$,6-X,1):GOSUB 2840:G4=G(K):GOTO 2020
  201. 2010  K$=MID$(B$,6-N,1):GOSUB 2840:G4=G(K)
  202. 2020  IF G4>G3 THEN G3=G4
  203. 2030  IF G(L)>=G3 THEN 1640 ELSE IF H<>3 THEN 1850
  204. 2040  GOSUB 2380:IF F1=1 THEN 1650 ELSE 1850
  205. 2050  T3=0:FOR K=1 TO 4:IF G(K)>T3 THEN T3=G(K):T1=K
  206. 2060  NEXT:IF T1-2*INT(T1/2)=1 THEN W8=W8+1 ELSE T4=T4+1
  207. 2070  H=0:K=T1-1:GOTO 1170
  208. 2080  T3=N:FOR I=1 TO 4:IF MID$(D$,2,1)<>MID$(B$,6-I,1) THEN 2100
  209. 2090  V(K,I)=V(K,I)-1:N=I
  210. 2100  NEXT:T2=(111-8*R)-2*(H-1):I=-1
  211. 2110  I=I+2
  212. 2120  IF D$=MID$(T$,I,2) THEN 2130 ELSE IF I<T2 THEN 2110
  213. 2130  IF I=T2 THEN 2160 ELSE IF I>1 THEN 2150
  214. 2140  T$=MID$(T$,3,104):GOTO 2170
  215. 2150  T$=MID$(T$,1,I-1)+MID$(T$,I+2,104):GOTO 2170
  216. 2160  IF T2=1 THEN 2170 ELSE T$=MID$(T$,1,T2-1)
  217. 2170  T9(K)=T9(K)-1:IF H=1 OR N=T3 THEN 2200
  218. 2180  IF N=X THEN 2190 ELSE N=T3:G(K)=0:RETURN
  219. 2190  N=T3
  220. 2200  GOSUB 2880
  221. 2210  RETURN
  222. 2220  D$="":T1=(28-2*R)*(K-1)+1:Z$=MID$(T$,T1,2*(14-R)-1)
  223. 2230  FOR I=1 TO 27-2*R STEP 2:D$=D$+MID$(Z$,I,1):NEXT
  224. 2240  IF V(K,1)=0 THEN 2260
  225. 2250  COLOR 0:PRINT TAB(L5);CHR$(6);" ";MID$(D$,1,V(K,1)):PRINT:GOTO 2270
  226. 2260  COLOR 0:PRINT TAB(L5);CHR$(6):PRINT
  227. 2270  IF V(K,2)=0 THEN 2290
  228. 2280  COLOR 0:PRINT TAB(L5);CHR$(3);" ";MID$(D$,V(K,1)+1,V(K,2)):PRINT:GOTO 2300
  229. 2290  COLOR 0:PRINT TAB(L5);CHR$(3):PRINT
  230. 2300  IF V(K,3)=0 THEN 2320
  231. 2310  T1=V(K,1)+V(K,2):COLOR 0:PRINT TAB(L5);CHR$(4);" ";MID$(D$,T1+1,V(K,3)):PRINT:GOTO 2330
  232. 2320  COLOR O:PRINT TAB(L5);CHR$(4):PRINT:IF V(K,4)=0 THEN 2350
  233. 2330  IF V(K,4)=0 THEN 2350
  234. 2340  T1=V(K,1)+V(K,2)+V(K,3):COLOR 0:PRINT TAB(L5);CHR$(5);" ";MID$(D$,T1+1,V(K,4)):PRINT:RETURN
  235. 2350  COLOR 0:PRINT TAB(L5);CHR$(5):PRINT:RETURN
  236. 2360  T5=0:IF K2=1 THEN 2370 ELSE FOR I=1 TO K2-1:T5=T5+2*T9(I):NEXT
  237. 2370  Z$=MID$(T$,T5+1,2*T9(K2)):RETURN
  238. 2380  K2=K:GOSUB 2360:T1=0:IF N=1 THEN 2390 ELSE FOR I=1 TO N-1:T1=T1+V(K,I)*2:NEXT
  239. 2390  T2=T1+1+V(K,N)*2-2
  240. 2400  K$=MID$(B$,6-N,1):GOSUB 2840:I=T1-1:IF G(K)>G3 THEN F1=0:RETURN
  241. 2410  I=I+2
  242. 2420  D$=MID$(Z$,I,2):GOSUB 2880:IF G(K)>G2 THEN 2430 ELSE 2440
  243. 2430  IF I<T2 THEN 2410
  244. 2440  IF I<>T1+1 THEN 2450 ELSE D$=MID$(Z$,T2,2):F1=1:RETURN
  245. 2450  D$=MID$(Z$,I-2,2):F1=1:RETURN
  246. 2460  FOR I=1 TO 4:P(I)=0:FOR J=1 TO 5:V(I,J)=0:Y(I,J)=0:NEXT:NEXT
  247. 2470  FOR I=1 TO 4:FOR J=1 TO 13
  248. 2480  T2=F(I,J)-13*INT(F(I,J)/13):T1=5-(INT((F(I,J)-0.9)/13)+1):IF T2=0 THEN T2=13
  249. 2490  IF T2<10 THEN 2500 ELSE T2=T2-9:Y(I,T1)=Y(I,T1)+T2
  250. 2500  V(I,T1)=V(I,T1)+1:NEXT:NEXT
  251. 2510  FOR I=1 TO 4:FOR J=1 TO 4:T1=3-V(I,J):IF T1<=0 THEN T1=0
  252. 2520  P(I)=P(I)+Y(I,J)+T1:F(I,J)=V(I,J)+(2*(V(I,J)-4)+Y(I,J)):IF V(I,J)<4 THEN F(I,J)=0
  253. 2530  NEXT:NEXT:I=0
  254. 2540  I=I+1:IF I>4 THEN RETURN ELSE T1=-1:FOR J=1 TO 4:IF F(I,J)<=T1 THEN 2560
  255. 2550  T1=F(I,J):T2=J
  256. 2560  NEXT J
  257. 2570  IF F(I,1)+T2>1 THEN 2580 ELSE X(I)=5:GOTO 2590
  258. 2580  X(I)=T2
  259. 2590  IF P(I)<16 THEN 2610 ELSE FOR J=1 TO 4:IF Y(I,J)<2 THEN 2610 ELSE IF V(I,J)<3 THEN 2610
  260. 2600  NEXT:X(I)=5:V(I,5)=5:Y(I,5)=7:F(I,5)=42
  261. 2610  GOTO 2540
  262. 2620  GOSUB 2780:IF T1>0 THEN RETURN ELSE K2=L:GOSUB 2360:T2=0
  263. 2630  FOR J=1 TO 4:T3=1+T2:F(L,J)=0:FOR I=T3 TO T3+V(L,J)-1:D$=MID$(Z$,2*I-1,2):GOSUB 2880:N2=N2-9:IF N2<0 THEN N2=0
  264. 2640  F(L,J)=F(L,J)+N2:NEXT:T2=T2+V(L,J):NEXT
  265. 2650  IF MID$(S$,2,1)="X" THEN 2700 ELSE IF V(L,X)=0 THEN 2700
  266. 2660  FOR J=1 TO 4:IF V(L,J)>0 THEN 2670 ELSE IF V(K,J)=0 THEN 2670 ELSE 2690
  267. 2670  NEXT
  268. 2680  IF V(L,4)>0 THEN 2700
  269. 2690  F(L,J)=10
  270. 2700  T2=-1:FOR J=1 TO 4:IF F(L,J)<=T2 THEN 2710 ELSE T2=F(L,J):F1=J
  271. 2710  NEXT:X(L)=F1:RETURN
  272. 2720  GOSUB 2360:T3=0:IF N=1 THEN 2740
  273. 2730  FOR I=1 TO N-1:T3=T3+V(K2,I):NEXT
  274. 2740  IF T3=14-R THEN T3=T3-1
  275. 2750  D$=MID$(Z$,2*T3+1,2):GOSUB 2880:RETURN
  276. 2760  IF K=1 THEN F$="SOUTH" ELSE IF K=2 THEN F$=" WEST" ELSE IF K=3 THEN F$="NORTH" ELSE IF K=4 THEN F$=" EAST":RETURN
  277. 2770  RETURN
  278. 2780  J=0
  279. 2790  J=J+1:K$=MID$(B$,6-J,1):IF J=X THEN 2800 ELSE K2=L:GOSUB 2840:T1=G(K):K2=M1:GOSUB 2840:IF G(K)>T1 THEN 2800 ELSE K2=M2:GOSUB 2840:IF G(K)<T1 THEN 2810
  280. 2800  IF J<4 THEN 2790 ELSE T1=0:RETURN
  281. 2810  IF V(K,J)=0 THEN 2800 ELSE IF X=5 THEN 2830 ELSE IF V(M1,J)>0 THEN 2820 ELSE IF V(M1,X)>0 THEN 2800
  282. 2820  IF V(M2,J)>0 THEN 2830 ELSE IF V(M2,X)>0 THEN 2800
  283. 2830  X(L)=J:T1=4:RETURN
  284. 2840  GOSUB 2360:I=0:F1=14-R
  285. 2850  I=I+1:IF MID$(Z$,2*I,1)=K$ THEN 2870
  286. 2860  IF I<F1 THEN 2850 ELSE G(K)=0:RETURN
  287. 2870  D$=MID$(Z$,2*I-1,2):GOSUB 2880:RETURN
  288. 2880  N1=0:IF MID$(D$,2,1)=MID$(S$,2,1) THEN N1=13
  289. 2890  FOR I2=9 TO 13:IF MID$(D$,1,1)=MID$(A$,I2,1) THEN N2=I2
  290. 2900  NEXT
  291. 2910  IF MID$(D$,1,1)<"A" THEN N2=VAL(MID$(D$,1,1))-1
  292. 2920  G(K)=N1+N2:RETURN
  293. 2930  PRINT:PRINT"  THE CONTRACT WAS ";S$;".":T1=VAL(LEFT$(S$,1)):IF K1-2*INT(K1/2)=1 THEN 2970 ELSE T3=T4-6-T1:IF T3=0 THEN 2950 ELSE IF T3>0 THEN 2960
  294. 2940  PRINT:PRINT"  YOUR OPPONENTS WERE SET";ABS(T3);"TRICK(S).":GOTO 3020
  295. 2950  PRINT:PRINT"  YOUR OPPONENTS MADE THEIR CONTRACT.":GOTO 3020
  296. 2960  PRINT:PRINT"  YOUR OPPONENTS MADE THEIR CONTRACT":PRINT"  PLUS";T3;"OVERTRICK(S).":GOTO 3020
  297. 2970  T3=W8-6-T1:IF T3=0 THEN 2990 ELSE IF T3>0 THEN 3000
  298. 2980  PRINT:PRINT"  YOU WERE SET";ABS(T3);"TRICK(S).":GOTO 3020
  299. 2990  PRINT:PRINT"  YOU MADE YOUR CONTRACT.":GOTO 3020
  300. 3000  PRINT:PRINT"  YOU MADE YOUR CONTRACT"
  301. 3010  PRINT"  PLUS";T3;"OVERTRICK(S)."
  302. 3020  IF LEFT$(Q$,1)="D" THEN 3040 ELSE PRINT:PRINT"  CONTINUE ";:INPUT D$:IF LEN(D$)=0 THEN 90
  303. 3030  IF MID$(D$,1,1)="N" THEN STOP ELSE GOTO 90
  304. 3040  PRINT:PRINT"  THE HAND YOU JUST":PRINT"PLAYED WAS #";:PRINT A9:END
  305. 3050  FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,6-X(K),1):IF Z$<=S$ THEN 3070
  306. 3060  D$=Z$:RETURN
  307. 3070  NEXT:RETURN
  308. 3080  FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,6-X(L),1):IF Z$<=S$ THEN 3100
  309. 3090  D$=Z$:RETURN
  310. 3100  NEXT:RETURN
  311. 3110  FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,6-X(L),1):IF Z$<=S$ THEN 3130
  312. 3120  D$=MID$(N$,I+1,1)+MID$(B$,6-X(L),1):RETURN
  313. 3130  NEXT:RETURN
  314. 3140  FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,1,1):IF Z$<=S$ THEN 3160
  315. 3150  D$=Z$:RETURN
  316. 3160  NEXT:RETURN
  317. 3170  T2=P(K)+P(L):IF K-2*INT(K/2)=0 THEN T2=T2-2
  318. 3180  F1=0:IF MID$(S$,1,1)<"2" THEN RETURN ELSE IF MID$(Z$,1,1)="3" THEN 3200
  319. 3190  IF MID$(Z$,1,1)="4" THEN 3210 ELSE IF MID$(Z$,1,1)="5" THEN 3240 ELSE IF MID$(Z$,1,1)="6" THEN 3270 ELSE IF MID$(Z$,1,1)="7" THEN 3280
  320. 3200  IF T2<23 THEN 3290 ELSE 3300
  321. 3210  IF T2<26 THEN 3290
  322. 3220  T1=LEN(E$):IF MID$(E$,T1-3,2)="3X" THEN 3290
  323. 3230  IF MID$(Z$,2,1)="X" THEN 3290 ELSE 3300
  324. 3240  IF T2<29 THEN 3290 ELSE IF T2>30 THEN RETURN ELSE T1=LEN(E$)
  325. 3250  IF MID$(E$,T1-3,2)="4S" THEN 3290
  326. 3260  IF MID$(E$,T1-3,2)="4H" THEN 3290 ELSE 3300
  327. 3270  IF T2<33 THEN 3290 ELSE 3300
  328. 3280  IF T2<37 THEN 3290 ELSE IF S$=MID$(E$,2*(K1-1)-3,2) THEN 3290 ELSE RETURN
  329. 3290  F1=1:C(K1)=1:RETURN
  330. 3300  IF T2>30 THEN RETURN
  331. 3310  FOR I2=1 TO 5:IF MID$(Z$,2,1)<>MID$(B$,I2,1) THEN 3330
  332. 3320  T1=VAL(MID$(Z$,1,1)):I=I2
  333. 3330  NEXT:IF I=1 THEN 3350 ELSE IF I>3 THEN 3360
  334. 3340  IF T1>5 THEN 3290 ELSE RETURN
  335. 3350  IF T1>3 THEN 3290 ELSE RETURN
  336. 3360  IF T1>4 THEN 3290 ELSE RETURN
  337. 3370  F1=0:IF MID$(E$,T1-5,6)="DB0000" THEN RETURN ELSE T2=P(1)+P(3):I=3*VAL(LEFT$(S$,1))+13:IF I>=T2 THEN F1=2
  338. 3380  RETURN
  339.